gusucode.com > 现代通信系统——使用MATLAB(+全部程序) > 现代通信系统——使用MATLAB(+全部程序)/现代通信系统——使用MATLAB(+全部程序)/Matlab 程序/Chapter10/programs/menu/pulsemenu.m
function rarg = pulsemenu (action); % menu for choice of pulse shape global name; global Buttons; global menuwinh; global buttonh; global MenuWinPos; Buttons = 4; ButtonText1 = 'NRZ Rectangular'; ButtonText2 = 'Raised-Cosine'; ButtonText3 = 'Root-RC'; ButtonText4 = 'Main Menu'; if nargin < 1 % no argument -> init action = 'init'; end; % ----------------------------------------------------------------- % init % initialize variables and open window if strcmp (action, 'init') % constants and definitions set(0,'Units','pixels'); scnsize = get(0,'ScreenSize'); MenuWinPos = [10 (scnsize(4) - (Buttons*28+50)-40)]; % window position pulsemenu ('openmenuwin'); % open window end; % ----------------------------------------------------------------- % openmenuwin % open window if strcmp (action, 'openmenuwin') menuwinh = figure ('Color', 'white', ... % open window 'Position', [MenuWinPos 160 (Buttons*28+50)], ... 'Name', 'Tutorial', ... 'NumberTitle', 'off', ... 'MenuBar', 'none', ... 'Resize', 'off', ... 'UserData', 'pulsemenu'); uicontrol (menuwinh, ... 'Style', 'text', ... 'Position', [5 (Buttons*28+5) 150 30], ... 'BackgroundColor', 'white', ... 'HorizontalAlignment', 'center', ... 'String', 'Pulse Shape'); for k = 1:Buttons ypos = (Buttons- k) * 28 + 10; ButtonTextString = eval (['ButtonText' num2str(k)]); CallBackFunction = ['Button' num2str(k)]; createbutton = ['buttonh(' num2str(k) ') = uicontrol (menuwinh, ' ... '''Position'', [5 ' num2str(ypos) ' 150 22], ' ... '''String'', ''' ButtonTextString ''', ' ... '''BackgroundColor'', ''white'', ' ... '''CallBack'', ''pulsemenu (''''' CallBackFunction ''''')'');']; eval (createbutton); end; clear createbutton ypos ButtonTextStr CallBackFunction; end; % ----------------------------------------------------------------- % Button1 if strcmp (action, 'Button1') delete(menuwinh); name=[name,'nrz']; filtmen; end; % ----------------------------------------------------------------- % Button2 if strcmp (action, 'Button2') delete(menuwinh); name=[name,'nyq']; name=[name,'mf']; backmen; eval(name); end; % ----------------------------------------------------------------- % Button3 if strcmp (action, 'Button3') delete(menuwinh); name=[name,'wny']; name=[name,'mf']; backmen; eval(name); end; % ----------------------------------------------------------------- % Button4 if strcmp (action, 'Button4') delete(menuwinh); DigModTutorial; end;